#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
IR 表达式节点模块

包含所有表达式相关的 IR 节点定义
"""


# 基础表达式类
from .base import IRExpr, IRRawExpr, build_expr_from_ast

# 基本表达式节点
from .basic import IRConstant, IRName

# 访问表达式节点
from .access import IRAttribute, IRSubscript, IRSlice

# 调用表达式节点
from .call import IRCall

# 运算符表达式节点
from .operators import IRUnaryOp, IRBinOp, IRBoolOp, IRCompare

# 字符串表达式节点
from .string import IRSFormat

# 控制流表达式节点
from .control import IRConditional

# 推导式表达式节点
from .comprehension import (
    IRComprehension,
    IRGeneratorExp,
    IRListComp,
    IRSetComp,
    IRDictComp,
)

# 字面量表达式节点
from .literals import IRDict, IRList, IRTuple, IRSet

# Lambda表达式节点
from .lambda_expr import IRLambda

# Await表达式节点
from .await_expr import IRAwait


__all__ = [
    # 基础表达式类
    "IRExpr",
    "IRRawExpr",
    # 基本表达式节点
    "IRConstant",
    "IRName",
    # 访问表达式节点
    "IRAttribute",
    "IRSubscript",
    "IRSlice",
    # 调用表达式节点
    "IRCall",
    # 运算符表达式节点
    "IRUnaryOp",
    "IRBinOp",
    "IRBoolOp",
    "IRCompare",
    # 字符串表达式节点
    "IRSFormat",
    # 控制流表达式节点
    "IRConditional",
    # 推导式表达式节点
    "IRComprehension",
    "IRGeneratorExp",
    "IRListComp",
    "IRSetComp",
    "IRDictComp",
    # 字面量表达式节点
    "IRDict",
    "IRList",
    "IRTuple",
    "IRSet",
    # Lambda表达式节点
    "IRLambda",
    # Await表达式节点
    "IRAwait",
    # 工具函数
    "build_expr_from_ast",
]
